package com.sk.ccflower.server.common.xmlRpcManager;

import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import org.apache.xmlrpc.XmlRpcRequest;
import org.apache.xmlrpc.client.XmlRpcClient;
import org.apache.xmlrpc.client.XmlRpcClientException;
import org.apache.xmlrpc.client.XmlRpcSunHttpTransport;


/**
 * XmlRpcSunHttpTransport에서 상속 받아서 구성한 클래스
 */
public class ModXmlRpcSunHttpTransport extends XmlRpcSunHttpTransport {
	private Map<String, String> m_hashRequestHeader = null;
	
	public ModXmlRpcSunHttpTransport(XmlRpcClient client) {
		super(client);
		m_hashRequestHeader = Collections.synchronizedMap(new HashMap<String, String>());

	}

	/**
	 * http header에 값을 추가하기 위한 함수
	 */
	public void addRequestHeader(String pHeader, String pValue) {
		m_hashRequestHeader.put(pHeader, pValue);
	}
	
	/**
	 * XmlRpcSunHttpTransport의 initHttpHeaders()에서 추가한 http header를 넣는 부분 추가
	 */
	@Override
	protected void initHttpHeaders(XmlRpcRequest pRequest) throws XmlRpcClientException {
		super.initHttpHeaders(pRequest);
		
		/*
		 * http header에 값을 추가하기 위해 아래의 부분이 추가됨.
		 */
		String header = null;
		Iterator<String> itr = m_hashRequestHeader.keySet().iterator();
		
		while(itr.hasNext()) {
			header = itr.next();
			setRequestHeader(header, m_hashRequestHeader.get(header));
    	}
		
		m_hashRequestHeader.clear();
	}
}